home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_08_06 / 8n06089a < prev    next >
Text File  |  1990-04-18  |  2KB  |  118 lines

  1. *****Listing 2*****
  2.  
  3. #include "string.h"
  4. #include "stdio.h"
  5. #include "stdlib.h"
  6. #include "fgiproto.h"
  7.  
  8. #define FGL_BUFSIZE 256
  9.  
  10. /* 4GL syntax is CALL OpenAsciiFile(filename,mode) returning filehandle */
  11. fgl_fopen(nargs)
  12. int nargs;
  13. {
  14.    char filename[80];
  15.    char mode[10];
  16.    FILE *ascfile;
  17.  
  18.    popquote(mode,sizeof(mode)-1);
  19.    popquote(filename,sizeof(filename)-1);
  20.    clipped(mode);
  21.    clipped(filename);
  22.    ascfile = fopen(filename,mode);
  23.    retlong((long)ascfile);
  24.    return 1;
  25. }
  26.  
  27.  
  28. /* 4GL syntax is CALL fgl_fclose(filehandle) */
  29. fgl_fclose(nargs)
  30. int nargs;
  31. {
  32.    long filehandle;
  33.  
  34.    poplong(&filehandle);
  35.    fclose((FILE *)filehandle);
  36.    return 0;
  37. }
  38.  
  39.  
  40. /* 4GL syntax is
  41.    CALL fgl_fgets(filehandle) returning err_code, buffer */
  42.  
  43. fgl_fgets(nargs)
  44. int nargs;
  45. {
  46.    long filehandle;
  47.    char buffer[FGL_BUFSIZE];
  48.    short err_code=0;
  49.    int len;
  50.  
  51.    poplong(&filehandle);
  52.    memset(buffer,0,sizeof(buffer));
  53.    if (fgets(buffer, sizeof(buffer)-1, (FILE *)filehandle) != NULL) {
  54.       len = strlen(buffer);
  55.       buffer[len-1] = '\0';  /* trim \r */
  56.       }
  57.    else
  58.       err_code = -1;
  59.    retshort(err_code);
  60.    retquote(buffer);
  61.    return 2;
  62. }
  63.  
  64.  
  65.  
  66. /* 4GL syntax is
  67.    CALL fgl_fputs(buffer,filehandle) returning err_code */
  68.  
  69. fgl_fputs(nargs)
  70. int nargs;
  71. {
  72.    long filehandle;
  73.    char buffer[FGL_BUFSIZE];
  74.    short err_code=0;
  75.    int len;
  76.  
  77.    poplong(&filehandle);
  78.    popquote(buffer,sizeof(buffer)-1);
  79.    clipped(buffer,(char)' ');
  80.    err_code = fputs(buffer,(FILE *)filehandle);
  81.    fputc('\n',(FILE *)filehandle);
  82.    retshort(err_code);
  83.    return 1;
  84. }
  85.  
  86.  
  87. /* 4GL syntax is
  88.    CALL fgl_max(arg1, arg2, ...) returning max_val */
  89.  
  90. fgl_max(nargs)
  91. int nargs;
  92. {
  93.    int i;
  94.    short test_val;
  95.    short max_val = -32767;
  96.  
  97.    for (i=0; i<nargs; i++) {
  98.       popshort(&test_val);
  99.       if (test_val > max_val)
  100.          max_val = test_val;
  101.       }
  102.  
  103.    retshort(max_val);
  104.    return 1;
  105. }
  106.  
  107.  
  108. clipped(str)    /* trim trailing blanks */
  109. char *str;
  110. {
  111.    char *blank;
  112.  
  113.    blank = str + strlen(str) - 1;
  114.    while (*blank == ' ')
  115.       *blank-- = '\0';
  116. }
  117.  
  118.